home *** CD-ROM | disk | FTP | other *** search
/ Game.EXE 2001 January / Game.EXE_01_2001.iso / demos / Blade of Darkness / data1.cab / Program_Executable_Files / Lib / AuxFuncs.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2000-11-16  |  26.2 KB  |  583 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 1.5)
  3.  
  4. import Bladex
  5. import BInput
  6. import Raster
  7. import math
  8. import InitDataField
  9. import B3DLib
  10. import whrandom
  11. import ScriptSkip
  12. import darfuncs
  13.  
  14. def Normalize(vector):
  15.     return B3DLib.Normalize(vector)
  16.  
  17.  
  18. def Scale(vector, scalar):
  19.     return B3DLib.Scale(vector, scalar)
  20.  
  21.  
  22. def Module(vector):
  23.     return B3DLib.Modulo(vector[0], vector[1], vector[2])
  24.  
  25.  
  26. def Pos2PosXZAngle(p1, p2):
  27.     return B3DLib.Pos2PosXZAngle(p1[0], p1[1], p1[2], p2[0], p2[1], p2[2])
  28.  
  29.  
  30. def GetSpot(obj):
  31.     n_child = obj.GetNChildren()
  32.     for n in range(n_child):
  33.         child = Bladex.GetEntity(obj.GetChild(n))
  34.     
  35.  
  36.  
  37. def GetFire(obj):
  38.     n_child = obj.GetNChildren()
  39.     for n in range(n_child):
  40.         child = Bladex.GetEntity(obj.GetChild(n))
  41.     
  42.  
  43.  
  44. def SpotIntensityVariationGrad(light_name, time):
  45.     light = Bladex.GetEntity(light_name)
  46.     light.Intensity = light.Intensity + light.Data.AuxFuncsData.IntensityVar
  47.     if light.Data.AuxFuncsData.SizeVar:
  48.         light.SizeFactor = light.SizeFactor + light.Data.AuxFuncsData.SizeVar
  49.     
  50.     if light.Data.AuxFuncsData.IntensityVar >= 0.0 and light.Intensity >= light.Data.AuxFuncsData.EndIntensity and light.Data.AuxFuncsData.IntensityVar < 0.0 and light.Intensity <= light.Data.AuxFuncsData.EndIntensity:
  51.         if light.Data.AuxFuncsData.SizeVar:
  52.             light.SizeFactor = light.Data.AuxFuncsData.EndSize
  53.         
  54.         light.Intensity = light.Data.AuxFuncsData.EndIntensity
  55.         light.RemoveFromList(light.Data.AuxFuncsData.Timer)
  56.         light.TimerFunc = ''
  57.         if light.Data.AuxFuncsData.DestroyOnEnd:
  58.             light.SubscribeToList('Pin')
  59.         
  60.     
  61.  
  62.  
  63. def SpotIntensityVariation(light_name, init_int, end_int, var_time, destroy = 0, init_size = 0.0, end_size = 0.0, timer = 'Timer60', timespersec = 60):
  64.     light = Bladex.GetEntity(light_name)
  65.     light.Intensity = init_int
  66.     InitDataField.Initialise(light)
  67.     light.Data.AuxFuncsData = ObjectAuxFuncsData()
  68.     light.Data.AuxFuncsData.EndIntensity = end_int
  69.     light.Data.AuxFuncsData.IntensityVar = (end_int - init_int) / (timespersec * var_time)
  70.     light.Data.AuxFuncsData.DestroyOnEnd = destroy
  71.     light.Data.AuxFuncsData.SizeVar = (end_size - init_size) / (timespersec * var_time)
  72.     light.Data.AuxFuncsData.EndSize = end_size
  73.     light.Data.AuxFuncsData.Timer = timer
  74.     if init_size or end_size:
  75.         light.SizeFactor = init_size
  76.     
  77.     light.TimerFunc = SpotIntensityVariationGrad
  78.     light.SubscribeToList(timer)
  79.  
  80.  
  81. def DeactivateKeyboard():
  82.     Bladex.DeactivateInput()
  83.     Bladex.ActivateInput()
  84.     InputManager = BInput.GetInputManager()
  85.     InputManager.AddInputActionsSet('EmptySet')
  86.     InputManager.SetInputActionsSet('EmptySet')
  87.     Bladex.AddInputAction('Abort', 0)
  88.     Bladex.AssocKey('Abort', 'Keyboard', 'Enter')
  89.     Bladex.AssocKey('Abort', 'Keyboard', 'Esc')
  90.     Bladex.AddBoundFunc('Abort', ScriptSkip.SkipCalled)
  91.  
  92.  
  93. def ActivateKeyboard():
  94.     IManager = BInput.GetInputManager()
  95.     IManager.SetInputActionsSet('EmptySet')
  96.     IActions = IManager.GetInputActions()
  97.     IAction = IActions.Find('Abort')
  98.     if IAction.Name() != 'NULL':
  99.         IAction.RemoveAllEvents()
  100.         print "Removed 'Abort'"
  101.     
  102.     InputManager = BInput.GetInputManager()
  103.     InputManager.SetInputActionsSet('Default')
  104.  
  105.  
  106. def StopCamTravelling(entity_name, camera_element, node):
  107.     cam = Bladex.GetEntity('Camera')
  108.     if node == 1:
  109.         cam.SType = 0
  110.         cam.TType = 0
  111.         cam.CameraClearPath(0)
  112.         cam.CameraClearPath(1)
  113.         if EndFunc:
  114.             EndFunc()
  115.         
  116.     
  117.  
  118.  
  119. def MoveCamFromTo(ox1, oy1, oz1, ox2, oy2, oz2, tx1, ty1, tz1, tx2, ty2, tz2, time, endfunc = ''):
  120.     global EndFunc
  121.     EndFunc = endfunc
  122.     cam = Bladex.GetEntity('Camera')
  123.     cam.AddCameraNode(0, time, ox1, oy1, oz1)
  124.     cam.AddCameraNode(0, time / 2.0, ox2, oy2, oz2)
  125.     cam.AddCameraNode(0, time / 2.0, (ox1 + ox2) / 2.0, (oy1 + oy2) / 2.0, (oz1 + oz2) / 2.0)
  126.     cam.AddCameraNode(1, time, tx1, ty1, tz1)
  127.     cam.AddCameraNode(1, time / 2.0, tx2, ty2, tz2)
  128.     cam.AddCameraNode(1, time / 2.0, (tx1 + tx2) / 2.0, (ty1 + ty2) / 2.0, (tz1 + tz2) / 2.0)
  129.     cam.SType = 1
  130.     cam.TType = 1
  131.     cam.CameraStartPath(0)
  132.     cam.CameraStartPath(1)
  133.     cam.ChangeNodeFunc = StopCamTravelling
  134.  
  135.  
  136. def ResetScene(cut = 1, persndsrc = 1, actinput = 1):
  137.     cam = Bladex.GetEntity('Camera')
  138.     cam.SetPersonView('Player1')
  139.     if cut:
  140.         cam.Cut()
  141.     
  142.     if persndsrc:
  143.         Bladex.SetListenerPosition(1)
  144.     
  145.     if actinput:
  146.         Bladex.ActivateInput()
  147.     
  148.  
  149.  
  150. class ScreenFadeEffect:
  151.     
  152.     def __init__(self):
  153.         self.FadeTime = 1.0
  154.         self.InitFadeTime = 1.0
  155.         self.EndFadeTime = 1.0
  156.         self.TotalFadeTime = 2.0
  157.         self.RColor = 0
  158.         self.GColor = 0
  159.         self.BColor = 0
  160.         self.InitAlpha = 1.0
  161.         self.EndAlpha = 0.0
  162.         self.AlphaVar = -1.0
  163.         self.InitTime = Bladex.GetTime()
  164.         self.ScreenSize = Raster.GetSize()
  165.  
  166.  
  167.  
  168. def Fade(time):
  169.     if Bladex.GetAppMode() == 'Menu':
  170.         return None
  171.     
  172.     pass_time = time - fade_effect.InitTime
  173.     if pass_time < fade_effect.InitFadeTime:
  174.         alpha = fade_effect.InitAlpha
  175.     elif fade_effect.AlphaVar > 0:
  176.         alpha = min(fade_effect.EndAlpha, fade_effect.InitAlpha + (pass_time - fade_effect.InitFadeTime) * fade_effect.AlphaVar / fade_effect.FadeTime)
  177.     else:
  178.         alpha = max(fade_effect.EndAlpha, fade_effect.InitAlpha + (pass_time - fade_effect.InitFadeTime) * fade_effect.AlphaVar / fade_effect.FadeTime)
  179.     Raster.SetFillColor(fade_effect.RColor, fade_effect.GColor, fade_effect.BColor)
  180.     Raster.SetAlpha(alpha)
  181.     Raster.SolidRectangle(0, 0, fade_effect.ScreenSize[0], fade_effect.ScreenSize[1])
  182.     if pass_time >= fade_effect.TotalFadeTime:
  183.         Bladex.RemoveAfterFrameFunc('Fade')
  184.     
  185.  
  186.  
  187. def FadeTo(fade_time = 1.0, end_fade_time = 1.0, rcolor = 0, gcolor = 0, bcolor = 0):
  188.     global fade_effect
  189.     fade_effect = ScreenFadeEffect()
  190.     fade_effect.FadeTime = fade_time
  191.     fade_effect.InitFadeTime = 0.0
  192.     fade_effect.EndFadeTime = end_fade_time
  193.     fade_effect.TotalFadeTime = fade_time + end_fade_time
  194.     fade_effect.RColor = rcolor
  195.     fade_effect.GColor = gcolor
  196.     fade_effect.BColor = bcolor
  197.     fade_effect.InitAlpha = 0.0
  198.     fade_effect.EndAlpha = 1.0
  199.     fade_effect.AlphaVar = 1.0
  200.     Bladex.SetAfterFrameFunc('Fade', Fade)
  201.  
  202.  
  203. def FadeFrom(fade_time = 1.0, init_fade_time = 1.0, rcolor = 0, gcolor = 0, bcolor = 0):
  204.     global fade_effect
  205.     fade_effect = ScreenFadeEffect()
  206.     fade_effect.FadeTime = fade_time
  207.     fade_effect.InitFadeTime = init_fade_time
  208.     fade_effect.EndFadeTime = 0.0
  209.     fade_effect.TotalFadeTime = fade_time + init_fade_time
  210.     fade_effect.RColor = rcolor
  211.     fade_effect.GColor = gcolor
  212.     fade_effect.BColor = bcolor
  213.     fade_effect.InitAlpha = 1.0
  214.     fade_effect.EndAlpha = 0.0
  215.     fade_effect.AlphaVar = -1.0
  216.     Bladex.SetAfterFrameFunc('Fade', Fade)
  217.  
  218.  
  219. def FadeFromTo(init_alpha, end_alpha, fade_time = 1.0, init_fade_time = 1.0, end_fade_time = 1.0, rcolor = 0, gcolor = 0, bcolor = 0):
  220.     global fade_effect
  221.     fade_effect = ScreenFadeEffect()
  222.     fade_effect.FadeTime = fade_time
  223.     fade_effect.InitFadeTime = init_fade_time
  224.     fade_effect.EndFadeTime = end_fade_time
  225.     fade_effect.TotalFadeTime = fade_time + init_fade_time + end_fade_time
  226.     fade_effect.RColor = rcolor
  227.     fade_effect.GColor = gcolor
  228.     fade_effect.BColor = bcolor
  229.     fade_effect.InitAlpha = float(init_alpha)
  230.     fade_effect.EndAlpha = float(end_alpha)
  231.     fade_effect.AlphaVar = fade_effect.EndAlpha - fade_effect.InitAlpha
  232.     Bladex.SetAfterFrameFunc('Fade', Fade)
  233.  
  234.  
  235. class SingleFrameScreenFadeEffect:
  236.     
  237.     def __init__(self):
  238.         self.RColor = 0
  239.         self.GColor = 0
  240.         self.BColor = 0
  241.         self.ScreenSize = Raster.GetSize()
  242.  
  243.  
  244.  
  245. def SingleFrameFadeFunc(time):
  246.     if Bladex.GetAppMode() == 'Menu':
  247.         return None
  248.     
  249.     Raster.SetFillColor(single_frame_fade_effect.RColor, single_frame_fade_effect.GColor, single_frame_fade_effect.BColor)
  250.     Raster.SetAlpha(1.0)
  251.     Raster.SolidRectangle(0, 0, single_frame_fade_effect.ScreenSize[0], single_frame_fade_effect.ScreenSize[1])
  252.     Bladex.RemoveAfterFrameFunc('SingleFrameFadeFunc')
  253.  
  254.  
  255. def SingleFrameFade(rcolor = 0, gcolor = 0, bcolor = 0):
  256.     global single_frame_fade_effect
  257.     single_frame_fade_effect = SingleFrameScreenFadeEffect()
  258.     single_frame_fade_effect.RColor = rcolor
  259.     single_frame_fade_effect.GColor = gcolor
  260.     single_frame_fade_effect.BColor = bcolor
  261.     Bladex.SetAfterFrameFunc('SingleFrameFadeFunc', SingleFrameFadeFunc)
  262.  
  263. DESTROY_METHOD_BIN = 1
  264. DESTROY_METHOD_REMOVE = 2
  265.  
  266. class ObjectAuxFuncsData:
  267.     InitAlpha = 0.0
  268.     EndAlpha = 0.0
  269.     AlphaVar = 0.0
  270.     AlphaInitVel = 0.0
  271.     AlphaAcc = 0.0
  272.     CurrentAlpha = 1.0
  273.     RVar = 0
  274.     GVar = 0
  275.     BVar = 0
  276.     EndColor = (0, 0, 0)
  277.     InitScale = 1.0
  278.     ScaleVar = 0.0
  279.     EndScale = 1.0
  280.     ScaleAcc = 0.0
  281.     ScaleInitVel = 0.0
  282.     WhileSclFunc = None
  283.     WhileSclArgs = ()
  284.     EndSclFunc = None
  285.     EndSclArgs = ()
  286.     AngleVar = 0
  287.     Axis = (0, 0, 1)
  288.     SizeVar = 1.0
  289.     EndSize = 1.0
  290.     CurrentSize = 1.0
  291.     IntensityVar = 0.0
  292.     EndIntensity = 0.0
  293.     Timer = 'Timer30'
  294.     InitTime = 0
  295.     TotalTime = 0.0
  296.     OnEndFunc = None
  297.     OnEndArgs = ()
  298.     DestroyOnEnd = 0
  299.  
  300.  
  301. def FadeObjectGrad(obj_name, time):
  302.     obj = Bladex.GetEntity(obj_name)
  303.     obj.Alpha = obj.Alpha + obj.Data.AuxFuncsData.AlphaVar
  304.     if obj.Data.AuxFuncsData.AlphaVar >= 0.0:
  305.         if obj.Alpha >= obj.Data.AuxFuncsData.EndAlpha:
  306.             obj.Alpha = obj.Data.AuxFuncsData.EndAlpha
  307.             obj.RemoveFromList('Timer60')
  308.             obj.TimerFunc = ''
  309.         
  310.     elif obj.Alpha <= obj.Data.AuxFuncsData.EndAlpha:
  311.         obj.Alpha = obj.Data.AuxFuncsData.EndAlpha
  312.         obj.RemoveFromList('Timer60')
  313.         obj.TimerFunc = ''
  314.         if obj.Data.AuxFuncsData.DestroyOnEnd:
  315.             if obj.Data.AuxFuncsData.DestroyOnEnd == DESTROY_METHOD_REMOVE:
  316.                 obj.RemoveFromWorld()
  317.             
  318.             if obj.Data.AuxFuncsData.DestroyOnEnd == DESTROY_METHOD_BIN:
  319.                 obj.SubscribeToList('Pin')
  320.             
  321.         
  322.     
  323.  
  324.  
  325. def FadeObject(obj_name, init_alpha, end_alpha, fade_time, destroy = 0):
  326.     obj = Bladex.GetEntity(obj_name)
  327.     obj.Alpha = init_alpha
  328.     InitDataField.Initialise(obj)
  329.     obj.Data.AuxFuncsData = ObjectAuxFuncsData()
  330.     obj.Data.AuxFuncsData.EndAlpha = end_alpha
  331.     obj.Data.AuxFuncsData.AlphaVar = (end_alpha - init_alpha) / (60.0 * fade_time)
  332.     obj.Data.AuxFuncsData.DestroyOnEnd = destroy
  333.     obj.TimerFunc = FadeObjectGrad
  334.     obj.SubscribeToList('Timer60')
  335.  
  336.  
  337. def ColorObjectGrad(obj_name, time):
  338.     obj = Bladex.GetEntity(obj_name)
  339.     (r, g, b) = (obj.Color[0] + obj.Data.AuxFuncsData.RVar, obj.Color[1] + obj.Data.AuxFuncsData.GVar, obj.Color[2] + obj.Data.AuxFuncsData.BVar)
  340.     if obj.Data.AuxFuncsData.RVar >= 0.0:
  341.         r = min(r, obj.Data.AuxFuncsData.EndColor[0])
  342.     else:
  343.         r = max(r, obj.Data.AuxFuncsData.EndColor[0])
  344.     if obj.Data.AuxFuncsData.GVar >= 0.0:
  345.         g = min(g, obj.Data.AuxFuncsData.EndColor[1])
  346.     else:
  347.         g = max(g, obj.Data.AuxFuncsData.EndColor[1])
  348.     if obj.Data.AuxFuncsData.BVar >= 0.0:
  349.         b = min(b, obj.Data.AuxFuncsData.EndColor[2])
  350.     else:
  351.         b = max(b, obj.Data.AuxFuncsData.EndColor[2])
  352.     obj.Color = (r, g, b)
  353.     if r == obj.Data.AuxFuncsData.EndColor[0] and g == obj.Data.AuxFuncsData.EndColor[1] and b == obj.Data.AuxFuncsData.EndColor[2]:
  354.         obj.RemoveFromList('Timer60')
  355.         obj.TimerFunc = ''
  356.         if obj.Data.AuxFuncsData.DestroyOnEnd:
  357.             if obj.Data.AuxFuncsData.DestroyOnEnd & DESTROY_METHOD_REMOVE:
  358.                 obj.RemoveFromWorld()
  359.             
  360.             if obj.Data.AuxFuncsData.DestroyOnEnd & DESTROY_METHOD_BIN:
  361.                 obj.SubscribeToList('Pin')
  362.             
  363.         
  364.     
  365.  
  366.  
  367. def ColorObject(obj_name, init_color, end_color, fade_time, destroy = 0):
  368.     obj = Bladex.GetEntity(obj_name)
  369.     init_r = min(max(init_color[0], 0), 255)
  370.     init_g = min(max(init_color[1], 0), 255)
  371.     init_b = min(max(init_color[2], 0), 255)
  372.     end_r = min(max(end_color[0], 0), 255)
  373.     end_g = min(max(end_color[1], 0), 255)
  374.     end_b = min(max(end_color[2], 0), 255)
  375.     obj.Color = (init_r, init_g, init_b)
  376.     InitDataField.Initialise(obj)
  377.     obj.Data.AuxFuncsData = ObjectAuxFuncsData()
  378.     obj.Data.AuxFuncsData.EndColor = (end_r, end_g, end_b)
  379.     obj.Data.AuxFuncsData.RVar = (end_color[0] - init_color[0]) / (60.0 * fade_time)
  380.     obj.Data.AuxFuncsData.GVar = (end_color[1] - init_color[1]) / (60.0 * fade_time)
  381.     obj.Data.AuxFuncsData.BVar = (end_color[2] - init_color[2]) / (60.0 * fade_time)
  382.     obj.Data.AuxFuncsData.DestroyOnEnd = destroy
  383.     obj.TimerFunc = ColorObjectGrad
  384.     obj.SubscribeToList('Timer60')
  385.  
  386.  
  387. def ScaleObjectGrad(obj_name, time):
  388.     obj = Bladex.GetEntity(obj_name)
  389.     obj.Scale = obj.Scale + obj.Data.AuxFuncsData.ScaleVar
  390.     if obj.Data.AuxFuncsData.ScaleVar >= 0.0:
  391.         if obj.Scale >= obj.Data.AuxFuncsData.EndScale:
  392.             obj.Scale = obj.Data.AuxFuncsData.EndScale
  393.             obj.RemoveFromList('Timer60')
  394.             obj.TimerFunc = ''
  395.         
  396.     elif obj.Scale <= obj.Data.AuxFuncsData.EndScale:
  397.         obj.Scale = obj.Data.AuxFuncsData.EndScale
  398.         obj.RemoveFromList('Timer60')
  399.         obj.TimerFunc = ''
  400.     
  401.  
  402.  
  403. def ScaleObject(obj_name, init_scale, end_scale, scale_time):
  404.     obj = Bladex.GetEntity(obj_name)
  405.     obj.Scale = init_scale
  406.     InitDataField.Initialise(obj)
  407.     obj.Data.AuxFuncsData = ObjectAuxFuncsData()
  408.     obj.Data.AuxFuncsData.EndScale = end_scale
  409.     obj.Data.AuxFuncsData.ScaleVar = (end_scale - init_scale) / (60.0 * scale_time)
  410.     obj.TimerFunc = ScaleObjectGrad
  411.     obj.SubscribeToList('Timer60')
  412.  
  413.  
  414. def GlowSizeVariationGrad(light_name, time):
  415.     light = Bladex.GetEntity(light_name)
  416.     light.SizeFactor = light.SizeFactor + light.Data.AuxFuncsData.SizeVar
  417.     if light.Data.AuxFuncsData.SizeVar >= 0.0 and light.SizeFactor >= light.Data.AuxFuncsData.EndSize and light.Data.AuxFuncsData.SizeVar < 0.0 and light.SizeFactor <= light.Data.AuxFuncsData.EndSize:
  418.         light.SizeFactor = light.Data.AuxFuncsData.EndSize
  419.         light.RemoveFromList('Timer30')
  420.         light.TimerFunc = ''
  421.         if light.Data.AuxFuncsData.DestroyOnEnd:
  422.             light.SubscribeToList('Pin')
  423.         
  424.     
  425.  
  426.  
  427. def GlowSizeVariation(light_name, init_size, end_size, var_time, destroy = 0):
  428.     light = Bladex.GetEntity(light_name)
  429.     light.SizeFactor = init_size
  430.     InitDataField.Initialise(light)
  431.     light.Data.AuxFuncsData = ObjectAuxFuncsData()
  432.     light.Data.AuxFuncsData.EndSize = end_size
  433.     light.Data.AuxFuncsData.SizeVar = (end_size - init_size) / (30.0 * var_time)
  434.     light.Data.AuxFuncsData.DestroyOnEnd = destroy
  435.     light.TimerFunc = GlowSizeVariationGrad
  436.     light.SubscribeToList('Timer30')
  437.  
  438.  
  439. def FadeAndScaleAuraGrad(ent_name, time):
  440.     aura = Bladex.GetEntity(ent_name)
  441.     aura.Data.AuxFuncsData.CurrentSize = aura.Data.AuxFuncsData.CurrentSize + aura.Data.AuxFuncsData.SizeVar
  442.     aura.Data.AuxFuncsData.CurrentAlpha = aura.Data.AuxFuncsData.CurrentAlpha + aura.Data.AuxFuncsData.AlphaVar
  443.     if aura.Data.AuxFuncsData.CurrentAlpha < 0.0:
  444.         aura.Data.AuxFuncsData.CurrentAlpha = 0.0
  445.     elif aura.Data.AuxFuncsData.CurrentAlpha > 1.0:
  446.         aura.Data.AuxFuncsData.CurrentAlpha = 1.0
  447.     
  448.     aura.SetAuraParams(aura.Data.AuxFuncsData.CurrentSize, aura.Data.AuxFuncsData.CurrentAlpha, 1, 0, 0, 1)
  449.     if aura.Data.AuxFuncsData.SizeVar > 0 and aura.Data.AuxFuncsData.CurrentSize >= aura.Data.AuxFuncsData.EndSize and aura.Data.AuxFuncsData.SizeVar < 0 and aura.Data.AuxFuncsData.CurrentSize <= aura.Data.AuxFuncsData.EndSize:
  450.         aura.RemoveFromList(aura.Data.AuxFuncsData.Timer)
  451.         aura.TimerFunc = ''
  452.         if aura.Data.AuxFuncsData.DestroyOnEnd:
  453.             aura.SubscribeToList('Pin')
  454.         else:
  455.             aura.SetAuraParams(aura.Data.AuxFuncsData.EndSize, aura.Data.AuxFuncsData.EndAlpha, 1, 0, 0, 1)
  456.         if aura.Data.AuxFuncsData.OnEndFunc:
  457.             apply(aura.Data.AuxFuncsData.OnEndFunc, aura.Data.AuxFuncsData.OnEndArgs)
  458.         
  459.     
  460.  
  461.  
  462. def FadeAndScaleAura(aura_name, init_size, end_size, init_alpha, end_alpha, time, destroy = 0, OnEndFunc = '', OnEndArgs = (), timer = 'Timer30', timespersec = 30):
  463.     aura = Bladex.GetEntity(aura_name)
  464.     InitDataField.Initialise(aura)
  465.     aura.Data.AuxFuncsData = ObjectAuxFuncsData()
  466.     aura.Data.AuxFuncsData.CurrentSize = init_size
  467.     aura.Data.AuxFuncsData.EndSize = end_size
  468.     aura.Data.AuxFuncsData.SizeVar = (end_size - init_size) / (time * timespersec)
  469.     aura.Data.AuxFuncsData.CurrentAlpha = init_alpha
  470.     aura.Data.AuxFuncsData.EndAlpha = end_alpha
  471.     aura.Data.AuxFuncsData.AlphaVar = (end_alpha - init_alpha) / (time * timespersec)
  472.     aura.Data.AuxFuncsData.DestroyOnEnd = destroy
  473.     aura.Data.AuxFuncsData.OnEndFunc = OnEndFunc
  474.     aura.Data.AuxFuncsData.OnEndArgs = OnEndArgs
  475.     aura.Data.AuxFuncsData.Timer = timer
  476.     aura.TimerFunc = FadeAndScaleAuraGrad
  477.     aura.SubscribeToList(timer)
  478.  
  479.  
  480. def FadeAndScaleGrad(obj_name, time):
  481.     obj = Bladex.GetEntity(obj_name)
  482.     curr_time = Bladex.GetTime() - obj.Data.AuxFuncsData.InitTime
  483.     obj.Alpha = obj.Data.AuxFuncsData.InitAlpha + obj.Data.AuxFuncsData.AlphaInitVel * curr_time + 0.5 * obj.Data.AuxFuncsData.AlphaAcc * curr_time ** 2
  484.     obj.Scale = obj.Data.AuxFuncsData.InitScale + obj.Data.AuxFuncsData.ScaleInitVel * curr_time + 0.5 * obj.Data.AuxFuncsData.ScaleAcc * curr_time ** 2
  485.     if obj.Data.AuxFuncsData.AngleVar:
  486.         (x, y, z) = obj.Data.AuxFuncsData.Axis
  487.         ang = whrandom.uniform(-(obj.Data.AuxFuncsData.AngleVar), obj.Data.AuxFuncsData.AngleVar)
  488.         obj.RotateRel(0, 0, 0, x, y, z, ang)
  489.     
  490.     if curr_time >= obj.Data.AuxFuncsData.TotalTime:
  491.         obj.Alpha = obj.Data.AuxFuncsData.EndAlpha
  492.         obj.Scale = obj.Data.AuxFuncsData.EndScale
  493.         obj.RemoveFromList('Timer30')
  494.         obj.TimerFunc = ''
  495.         if obj.Data.AuxFuncsData.DestroyOnEnd == DESTROY_METHOD_BIN:
  496.             obj.SubscribeToList('Pin')
  497.         elif obj.Data.AuxFuncsData.DestroyOnEnd == DESTROY_METHOD_REMOVE:
  498.             obj.RemoveFromWorld()
  499.         
  500.     
  501.  
  502.  
  503. def FadeAndScale(obj_name, pos, init_alpha, end_alpha, alpha_acc, init_scl, end_scl, scl_acc, time, ang_var = 0, destroy = 0, axis = (0, 0, 1)):
  504.     obj = Bladex.GetEntity(obj_name)
  505.     obj.Alpha = init_alpha
  506.     obj.Scale = init_scl
  507.     obj.Position = pos
  508.     InitDataField.Initialise(obj)
  509.     obj.Data.AuxFuncsData = ObjectAuxFuncsData()
  510.     obj.Data.AuxFuncsData.InitAlpha = init_alpha
  511.     obj.Data.AuxFuncsData.EndAlpha = end_alpha
  512.     obj.Data.AuxFuncsData.AlphaAcc = alpha_acc * 2.0 * (end_alpha - init_alpha) / time ** 2
  513.     obj.Data.AuxFuncsData.AlphaInitVel = (end_alpha - init_alpha - alpha_acc * (end_alpha - init_alpha)) / time
  514.     obj.Data.AuxFuncsData.InitScale = init_scl
  515.     obj.Data.AuxFuncsData.EndScale = end_scl
  516.     obj.Data.AuxFuncsData.ScaleAcc = scl_acc * 2.0 * (end_scl - init_scl) / time ** 2
  517.     obj.Data.AuxFuncsData.ScaleInitVel = (end_scl - init_scl - scl_acc * (end_scl - init_scl)) / time
  518.     obj.Data.AuxFuncsData.AngleVar = ang_var
  519.     obj.Data.AuxFuncsData.Axis = axis
  520.     obj.Data.AuxFuncsData.DestroyOnEnd = destroy
  521.     obj.Data.AuxFuncsData.InitTime = Bladex.GetTime()
  522.     obj.Data.AuxFuncsData.TotalTime = time
  523.     obj.TimerFunc = FadeAndScaleGrad
  524.     obj.SubscribeToList('Timer30')
  525.  
  526.  
  527. def ScaleObjectV2Grad(obj_name, time):
  528.     obj = Bladex.GetEntity(obj_name)
  529.     curr_time = Bladex.GetTime() - obj.Data.AuxFuncsData.InitTime
  530.     obj.Scale = obj.Data.AuxFuncsData.InitScale + obj.Data.AuxFuncsData.ScaleInitVel * curr_time + 0.5 * obj.Data.AuxFuncsData.ScaleAcc * curr_time ** 2
  531.     if obj.Data.AuxFuncsData.WhileSclFunc:
  532.         apply(obj.Data.AuxFuncsData.WhileSclFunc, obj.Data.AuxFuncsData.WhileSclArgs)
  533.     
  534.     if curr_time >= obj.Data.AuxFuncsData.TotalTime:
  535.         obj.Scale = obj.Data.AuxFuncsData.EndScale
  536.         obj.RemoveFromList('Timer30')
  537.         obj.TimerFunc = ''
  538.         if obj.Data.AuxFuncsData.EndSclFunc:
  539.             apply(obj.Data.AuxFuncsData.EndSclFunc, obj.Data.AuxFuncsData.EndSclArgs)
  540.         
  541.         if obj.Data.AuxFuncsData.DestroyOnEnd == DESTROY_METHOD_BIN:
  542.             obj.SubscribeToList('Pin')
  543.         elif obj.Data.AuxFuncsData.DestroyOnEnd == DESTROY_METHOD_REMOVE:
  544.             obj.RemoveFromWorld()
  545.         
  546.     
  547.  
  548.  
  549. def ScaleObjectV2(obj_name, init_scl, end_scl, scl_acc, time, WhileSclFunc = '', WhileSclArgs = (), EndSclFunc = '', EndSclArgs = (), destroy = 0):
  550.     obj = Bladex.GetEntity(obj_name)
  551.     obj.Scale = init_scl
  552.     InitDataField.Initialise(obj)
  553.     obj.Data.AuxFuncsData = ObjectAuxFuncsData()
  554.     obj.Data.AuxFuncsData.InitScale = init_scl
  555.     obj.Data.AuxFuncsData.EndScale = end_scl
  556.     obj.Data.AuxFuncsData.ScaleAcc = scl_acc * 2.0 * (end_scl - init_scl) / time ** 2
  557.     obj.Data.AuxFuncsData.ScaleInitVel = (end_scl - init_scl - scl_acc * (end_scl - init_scl)) / time
  558.     obj.Data.AuxFuncsData.WhileSclFunc = WhileSclFunc
  559.     obj.Data.AuxFuncsData.WhileSclArgs = WhileSclArgs
  560.     obj.Data.AuxFuncsData.EndSclFunc = EndSclFunc
  561.     obj.Data.AuxFuncsData.EndSclArgs = EndSclArgs
  562.     obj.Data.AuxFuncsData.DestroyOnEnd = destroy
  563.     obj.Data.AuxFuncsData.InitTime = Bladex.GetTime()
  564.     obj.Data.AuxFuncsData.TotalTime = time
  565.     obj.TimerFunc = ScaleObjectV2Grad
  566.     obj.SubscribeToList('Timer30')
  567.  
  568.  
  569. def SetRadialFireDamageObject(object_name, radius = 500.0, floor_displ = 1000.0, roof_displ = 2000.0):
  570.     (x, y, z) = Bladex.GetEntity(object_name).Position
  571.     dx = radius / 2.0
  572.     dz = radius * (math.sqrt(3.0) / 2.0)
  573.     trsector_name = object_name + '_TrSectorFire'
  574.     Bladex.AddTriggerSector(trsector_name, 'SectoresTriggerFuego', y + floor_displ, y - roof_displ, [
  575.         (x + dx, z + dz),
  576.         (x - dx, z + dz),
  577.         (x - radius, z),
  578.         (x - dx, z - dz),
  579.         (x + dx, z - dz),
  580.         (x + radius, z)])
  581.     darfuncs.FireOnGS(trsector_name)
  582.  
  583.